package com.gisquest.cloud.entity.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @Author guowei
 * @Date 2020/6/17 13:31
 * @Description: 请求日志对象--客户端请求时请求参数及处理请求服务的基本信息，客户端包括浏览器、系统应用等，具体字段如下
 **/
@Data
public class RequestEntity {
  /**
   *业务标识--标识整个业务流程唯一标识，由运维框架生成
   */
  @ApiModelProperty(value = "业务标识")
  String ywh;
  /**
   *操作标识--标识前端操作唯一标识，由前端生成UUID
   */
  @ApiModelProperty(value = "操作标识")
  String optId;
  /**
   *请求标识--标识客户端端发起请求的唯一标识。在微服务架构下，使用该标识可串联某一次客户请求后端服务调用链，查询方式:精确查询
   */
  @ApiModelProperty(value = "请求标识")
  String requestId;
  /**
   *请求开始时间--服务接收到客户端请求时的时间，查询方式:范围查询
   */
  @ApiModelProperty(value = "请求开始时间,格式：yyyy-MM-dd HH:mm:ss.SSS")
  String requestStartTime;
  /**
   *请求结束时间--服务接收到客户端请求时的时间，查询方式:范围查询
   */
  @ApiModelProperty(value = "请求结束时间,格式：yyyy-MM-dd HH:mm:ss.SSS")
  String requestEndTime;
  /**
   *服务名称--处理请求服务的方法所在的服务或模块，查询方式:精确查询
   */
  @ApiModelProperty(value = "服务名称")
  String microName;
  /**
   *服务类型--HTTP(S)、RPC、Webservice、C/S，查询方式:精确查询
   */
  @ApiModelProperty(value = "服务类型")
  String serviceKind;
  /**
   *请求方法--根据服务类型不同记录不同的值。HTTP(S)记录HTTP请求方法，
   * 例如GET、POST、DELETE等；RPC、Webservice、C/S记录调用方法名称，查询方式:精确查询
   */
  @ApiModelProperty(value = "请求方法")
  String methodName;
  /**
   *请求地址--根据服务类型不同记录不同的值。
   * HTTP(S)记录HTTP请求URL；Webservice记录服务地址；RPC及C/S记录包名及类名，查询方式:精确查询
   */
  @ApiModelProperty(value = "请求地址")
  String requestUrl;
  /**
   *请求参数--请求参数为简单类型，参数转换MAP结构作为整体存储，针对HTTP(S)服务请求，
   * 来源于请求的getParameterMap()，
   * 其它类型来源于方法的简单参数，查询方式:包含查询
   */
  @ApiModelProperty(value = "请求参数")
  String querystring;
  /**
   *请求体--请求参数为复杂类型，HTTP(S)来源于请求Body，其它来源于参数中的复杂数据类型，以json格式存储
   */
  @ApiModelProperty(value = "请求体")
  String requestBody;
  /**
   *操作类型--分为查询、更新、删除、新增四种操作，查询方式:精确查询
   */
  @ApiModelProperty(value = "操作类型")
  String optKind;
  /**
   *请求来源--客户端请求来源页面URL（新系统）
   */
  @ApiModelProperty(value = "请求来源")
  String requestFrom;
  /**
   *客户端信息--针对HTTP(S)请求客户端浏览器信息
   */
  @ApiModelProperty(value = "客户端信息")
  String useragent;

  /**
   * 页号
   */
  @ApiModelProperty(value = "页码，最小是1",dataType = "int")
  private int pageNum = 1;
  /**
   * 页面大小
   */
  @ApiModelProperty(value = "每一页的数据条数，最小是1",dataType = "int")
  private int pageSize = 10;
  /**
   * 排序字段
   */
  @ApiModelProperty(value = "按字段排序，按时间排序")
  private String sort;
  /**
   * 排序方式 asc/desc
   */
  @ApiModelProperty(value = "排序方式")
  private String order;

}
